package cn.glutnn.console;

import java.util.List;
import java.util.Scanner;

import cn.glutnn.dao.NoticeDao;
import cn.glutnn.entity.Notice;

public class NoticeConsole {

	NoticeDao noticeDao = new NoticeDao();

	/**
	 * 查询功能
	 */
	public void search() {
		// (完成)1、接收输入的电影名称
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入电影名称：");
		String noticeName = scanner.next();

		// 2、查询数据库中的t_notice
		List<Notice> list = noticeDao.find(noticeName);

		// 3、在控制台上打印输出电影信息,使用for循环实现
		for (int i = 0, ii = list.size(); i < ii; i++) {
			Notice notice = list.get(i);
			// 打印输出格式为：“”
			System.out.println("《" + notice.name + "》：" + notice.content
					+ " -- " + notice.showdate + "");
		}

	}

	/**
	 * 新增
	 */
	public void save() {
		// 1、接收控制台输入的电影信息
		Scanner scanner = new Scanner(System.in);

		System.out.println("请输入电影名称：");
		String name = scanner.next();
		// 1-1、验证电影名称，不允许重名,传电影名称，从数据库的查找，如找到返回true,否则false
		boolean checkOK = checkNameDuplication(name);
		if (!checkOK) {
			System.out.println("该《" + name + "》电影已重名");
			return;
		}

		System.out.println("请输入电影简介：");
		String content = scanner.next();
		System.out.println("请输入电影上映日期：");
		String showdate = scanner.next();

		// 2、封装到Notice实例中，通过构造函数创建实例
		Notice notice = new Notice(name, content, showdate);

		// 3、调用dao，保存电影信息到数据库
		boolean isOK = noticeDao.save(notice);
		if (isOK) {
			System.out.println("新增成功！");
		}
	}

	/**
	 * 验证重名
	 * 
	 * @return
	 */
	private boolean checkNameDuplication(String name) {
		List<Notice> list = noticeDao.find(name);
		boolean canSave = list.size() == 0;

		if (!canSave) {
			System.out.println("已经存在该《" + name + "》电影!");
			return false;
		}

		return true;
	}

	/**
	 * 更新
	 */
	public void update() {
		// 1、接收需要更新的电影名称
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入需要修改的电影名称：");
		String name = scanner.nextLine();

		// 2、查出该电影实体notice,如果不存在那么提示
		Notice notice = noticeDao.findOne(name);
		if (notice == null) {
			System.out.println("该《" + name + "》电影不存在");
			return;
		}

		// 3、接收新的电影简介输入（要求，如果获取到的输入是空字符串，那么不修改）
		// 基本值类型： int/double/float/boolean
		// 基本值对象：Integer/Double/Float/Boolean/String
		System.out.println("电影名称更改为（不更改直接回车）：");
		String name2 = scanner.nextLine();
		if (!"".equals(name2)) {
			notice.name = name2;
		}

		// 3-1、接收电影上映日期输入
		System.out.println("电影上映日期更改为（不更改直接回车）：");
		String showdate = scanner.nextLine();
		if (!"".equals(showdate)) {
			notice.showdate = showdate;
		}
		// 3-2、接收电影简介输入
		System.out.println("电影简介更改为（不更改直接回车）：");
		String content = scanner.nextLine();
		if (!"".equals(content)) {
			notice.content = content;
		}
		
		// 4、更新电影简介到数据库中
		boolean isUdateOK = noticeDao.update(notice);
		// 5、友好提示一下结果
		if (isUdateOK) {
			System.out.println("更新《"+notice.name+"》成功");
		} else {
			System.out.println("更新《"+notice.name+"》失败");
		}
	}

	/**
	 * 删除
	 */
	public void delete() {
		// 1、接收要删除的电影名称
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入需要删除的电影名称：");
		String name = scanner.next();
		// 2、找到该电影的id
		// 2-1、根据电影名称，查询出电影信息
		Notice notice = noticeDao.findOne(name);
		if (notice == null) {
			System.out.println("找不到该《" + name + "》电影");
			return;
		}

		// 3、调用dao，删除电影
		boolean isDeleteOK = noticeDao.delete(notice.id);
		// 4、如果删除成功，提示
		if (isDeleteOK) {
			System.out.println("已成功删除《" + notice.name + "》电影");
		} else {
			System.out.println("删除《" + notice.name + "》电影失败！");
		}
	}

}
